Page({
  data: {
    // 选中房屋信息
    houseInfo: '',
    houseId: '',
    // 选中维修项目
    repairItemName: '',
    repairItemId: '',
    // 手机号
    mobile: '',
    // 预约日期
    appointment: '',
    // 问题描述
    description: '',
    // 时间选择器默认显示当前的时间
    currentDate: new Date().getTime(),
    // 控制选择房屋弹层
    houseLayerVisible: false,
    // 控制维修项目弹层
    repairLayerVisible: false,
    // 控制上门维修时间弹层
    dateLayerVisible: false,
    // 选择房屋的数据（正常是请求后台的数据进行渲染）
    houseList: [],
    // 选择维修项目（调用后台接口获取）
    repairItem: [],
    // 报修问题描述图片列表
    attachment: [],
  },
  onLoad({ id }) {
    //获取房屋列表
    this.getHouseList()
    //获取维修项目列表
    this.getRepairItem()
    if (id) {
      wx.setNavigationBarTitle({
        title: '修改维修信息',
      });
      this.getDetail(id)
    }
  },
  /**
   * 修改信息的时候获取详情
   */
  async getDetail(id) {
    const { data } = await wx.http.get('/repair/' + id)
    this.setData({
      ...data
    })

  },

  /**
   * 上传维修图片
   * @param {*} e 
   */
  uploadImg(e) {
    // console.log(e.detail);
    // 1、先获取本地图片的地址
    const imgUrl = e.detail.file.url
    // 2、上传到服务器
    wx.uploadFile({
      url: wx.baseURL + '/upload',//后台服务器的地址
      filePath: imgUrl,
      name: 'file',
      header: {
        Authorization: getApp().token
      },
      success: (result) => {
        // 先转为对象形式
        const img = JSON.parse(result.data)
        // 把attachment解构出来
        const { attachment } = this.data
        // 把后台反回来的图片url推送到attachment中
        attachment.push(img.data)
        // 更新数据，渲染到页面
        this.setData({
          attachment
        })
      },
      fail: () => { },
      complete: () => { }
    });

  },
  /**
   * 删除维修图片
   */
  delImg(ev) {
    const { file } = ev.detail
    this.setData({
      attachment: this.data.attachment.filter(item => item.id !== file.id)
    })
  },
  /**
   * 获取房屋列表
   */
  async getHouseList() {
    const { data } = await wx.http.get('/house')
    // console.log(data);
    this.setData({
      houseList: data
    })
  },
  /**
   * 获取维修项目列表
   */
  async getRepairItem() {
    const { data } = await wx.http.get('/repairItem')
    // console.log(data);
    this.setData({
      repairItem: data
    })
  },
  /**
   * 选中的房屋信息
   * @param {*} e 
   */
  selectHouse(e) {
    const { id: houseId, name: houseInfo } = e.detail
    this.setData({
      houseId, houseInfo
    })
  },
  /**
   * 选中的维修信息
   * @param {*} e 
   */
  selectRepairItem(e) {
    const { id: repairItemId, name: repairItemName } = e.detail
    this.setData({
      repairItemId, repairItemName
    })
  },
  /**
   * 选择维修上门时间
   * @param {*} e 
   */
  selectTime(e) {
    this.setData({
      // 手动关闭
      dateLayerVisible: false,
      // 通过封装的dayjs方法进行格式化
      appointment: wx.utils.formatTime(e.detail)
    })
  },
  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openRepairLayer() {
    this.setData({ repairLayerVisible: true })
  },
  closeRepairLayer() {
    this.setData({
      repairLayerVisible: false,
    })
  },

  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },
  async goList() {

    // 1、校验格式
    // 如果是维修的时候，直接将id带入即可，如果是新增，携带id也不影响，因为发生请求的时候，发现参数是undefinded会自动去掉
    const { id, houseId, repairItemId, appointment, mobile, description, attachment } = this.data
    if (!houseId) return wx.utils.toast('请选择报修房屋！', 'error')
    if (!repairItemId) return wx.utils.toast('请选择报修项目！', 'error')
    if (!/^[1][3-8][0-9]{9}$/.test(mobile)) return wx.utils.toast('请填写正确手机号！', 'error')
    if (!appointment) return wx.utils.toast('请选择报修时间！', 'error')
    if (!description) return wx.utils.toast('请填写问题描述！', 'error')
    if (attachment.length === 0) return wx.utils.toast('请上传问题描述图片！', 'error')

    // 2、调佣接口

    try {
      // 如果是维修的时候，直接将id带入即可，如果是新增，携带id也不影响，因为发生请求的时候，发现参数是undefinded会自动去掉
      await wx.http.post('/repair', { id, houseId, repairItemId, appointment, mobile, description, attachment })
      setTimeout(() => {
        wx.utils.toast('添加报修单成功！')
      }, 1000)
      wx.reLaunch({
        url: '/repair_pkg/pages/list/index',
      })
    } catch (error) {
      wx.utils.toast('添加报修失败！', 'error')
    }
  },
})
